class Solution 
{
public:
    void sortColors(vector<int>& nums) 
    {
        int i = 0, left = -1, right = nums.size();
        while (i < right)
        {
            if (nums[i] == 0)
            {
                // swap(nums[left + 1], nums[i]);
                // left++; i++;
                swap(nums[++left], nums[i++]);
            }
            else if (nums[i] == 1)
                i++;
            else
            {
                // swap(nums[right - 1], nums[i]);
                // right--;
                swap(nums[--right], nums[i]);
            }
        }    
    }
};
